A significant portion of processing for particular applications performed by data processing systems, for example Advanced Driver Assistance Systems, is based on linear algebra computation. Linear algebra computation uses information organized in matrices. Linear algebra computation includes operations which can accept one or more matrices as operands, and produce a matrix as a result. For example, two operand matrices can be multiplied together according to the rules of linear algebra to produce a result matrix. Other linear algebra operations accept a matrix and a scalar value as operations, producing a matrix as a result. For example, each value in a matrix can be multiplied by the scalar value.
A matrix for linear algebra computation can be represented as a rectangular array of numerical values arranged in rows and columns. A size of a matrix is indicated by the number of rows, indicated by the symbol m, and the number of columns, indicated by the symbol n. Individual columns of a matrix can be identified by integer values beginning with ‘0’ and ending with m−1. An integer value identifying a column can be referred to as the index of the column. Similarly, individual rows of a matrix can be identified by integer values beginning with ‘0’ and ending with n−1 and the integer value associated with a particular row can be referred to as its index. Each element of a matrix is a storage location corresponding to exactly one row and one column. A single element of a matrix can be identified by a pair of numbers indicating the row and column of the element. For example, an element in the first column and last row of a matrix can be identified by the pair (0, n−1).
Matrices having particular properties occur in some applications. A matrix which has a large number of individual elements with a zero value relative to the number of elements with a non-zero value can be referred to as a sparse matrix. Sparse matrixes are common in some types of data processing functions. Some matrices are not sparse matrices but can be transformed to sparse matrices in particular circumstances. A matrix can have particular elements with values which are very small, numerically, in comparison with the values of other elements of the matrix. A matrix which has a large number of elements which have zero or very small values in comparison with the number of elements having large non-zero values can be referred to as a near-sparse matrix. In some applications of a data processing system, converting a near-sparse matrix to a sparse matrix by setting the small non-zero values to zero results in acceptable functionality. In other applications, linear algebra operations on a sparse matrix produce a result that should be a sparse matrix but is not. For example, inverting an operand sparse matrix to obtain a result matrix and then inverting the result matrix should result in a second result matrix having the same values as the operand sparse matrix. However, due to the finite precision of mathematical operations in a data processing system, the output of the second matrix inversion can have elements that should have zero values but instead have very small non-zero values. In computations in a data processing system, knowledge of features that a result matrix should have can allow values near zero to be set to exactly zero.
The use of the same reference symbols in different drawings indicates similar or identical items.